package com.jushu.storbox.database;

import java.util.List;

import com.jushu.storbox.entities.FileFolderInfo;
import com.jushu.storbox.entities.FileInfo;
import com.huawei.sharedrive.sdk.android.modelV2.response.FileInfoResponseV2;

public interface ITeamSpaceFileDao extends IBaseDao {
	/**
	 * 插入文件
	 * 
	 * @param fileInfo
	 * @param context
	 */
	public long insertFile(FileInfoResponseV2 fileInfo);
	
	/**
	 * 插入文件
	 * 
	 * @param fileInfo
	 * @param context
	 */
	public long insertFile(FileFolderInfo fileInfo);

	/**
	 * 更新文件，使用服务器端对象
	 * 
	 * @param fileInfo
	 */
	public void updateFile(FileInfoResponseV2 fileInfoResponse,boolean isSync);

	/**
	 * 更新文件 ，使用本地对象
	 * 
	 * @param fileInfo
	 */
	public void updateFile(FileInfo fileInfo);

	/**
	 * 插入或者更新一个文件信息。如果id为空就插入，如果不为空存在就更新。
	 * 
	 * @param fileInfo
	 */
	public void inserOrUpdateFile(FileInfoResponseV2 fileInfo);

	/**
	 * 获取文件列表，传入当前文件夹的Id
	 * 
	 * @param folderId
	 * @return
	 */
	public List<FileInfo> getFileList(String folderId);
	
	/**
	 * 获取文件列表，传入当前文件夹的Id和当前分页位置
	 * 
	 * @param flag --- 0:my cloud, 1:shared
	 * @param folderId
	 * @param currentPage
	 * @return
	 */
	public List<FileInfo> getFileListPage(int flag, String folderId);
	
	
	
	/***
	 * 获取文件列表，传入当前文件夹的Id和当前分页位置
	 * @param flag
	 * @param folderId
	 * @param des
	 * @param orderBy
	 * @return
	 */
	public List<FileInfo> getFileListPage(int flag, String folderId,String des,String orderBy);

	/***
	 * 获取根据时间排序的文件列表，传入当前文件夹的Id和当前分页位置
	 * @param flag
	 * @param folderId
	 * @param des
	 * @param orderBy
	 * @return
	 */
	
	public List<FileInfo> getFileListPageOrderByName(int flag, String folderId,String des,String orderBy);
	
	/**
	 * 根据文件Id获取文件的详细信息
	 * 
	 * @param fileId
	 * @return
	 */
	public FileInfo getFileById(String fileId);

	/**
	 * 删除数据文件
	 * 
	 * @param id
	 */
	public void deleteFile(String id);

	/**
	 * 重命名文件
	 * 
	 * @param name
	 * @param fileID
	 */
	public void renameFile(String name, FileInfoResponseV2 fileInfoResponse,String filePath);

	/**
	 * 移动（文件）
	 * 
	 * @param context
	 * @param parentID
	 * @param FolderID
	 */
	public void moveFile(String parentID, String FolderID,String filePath);

	/**
	 * 更新本地路径，
	 * 
	 * @param fileId
	 *            文件ID
	 * @param localPath
	 *            路径地址
	 */
	public void updateLocalPath(String fileId, String localPath);

	/**
	 * 更新文件状态
	 * 
	 * @param status
	 *            状态
	 * @param fileId
	 *            文件Id
	 */
	public void updateTransStatus(int status, String fileId);
	/**
	 * 更新文件状态
	 * 
	 * @param status
	 *            状态
	 * @param fileId
	 *            文件Id
	 */
	public void updateTransStatusAll(int status);

	/**
	 * 更新本地是否缓存的状态
	 * 
	 * @param syncStatus
	 *            是否同步状态
	 * @param fileId
	 *            文件Id
	 */
	public void updateSyncStatus(int syncStatus, String fileId);
	
	/**
	 * 删除所有数据
	 */
	public void deleteAll();
	
		
	public List<FileFolderInfo> getSearchFileList(String fileName);
	
	public String getTeamSpaceId();
	
	public void setTeamSpaceId(String teamspaceid);

	int getTransStates(String fileId);

	
}
